package de.pdbm.swt.aufgabe5;

import java.math.BigDecimal;
import java.util.List;

import de.pdbm.swt.aufgabe5.Mitarbeiter;
import de.pdbm.swt.aufgabe5.UmsatzUndProvision;

public class Provisionsberechnung {
    UmsatzUndProvision geldClass = new UmsatzUndProvision();
    int zaehler = 1;

    public static UmsatzUndProvision getUmsatzUndProvision(
	    Mitarbeiter mitarbeiter) {

	Provisionsberechnung dummy = new Provisionsberechnung();
	UmsatzUndProvision geld = new UmsatzUndProvision();

	if (mitarbeiter.getMitarbeiter().isEmpty()) {
	    geld.umsatz = mitarbeiter.getUmsatz();
	    geld.provision = mitarbeiter.getUmsatz().multiply(
		    new BigDecimal(0.1));
	    return geld;
	}

	dummy.rekursion(mitarbeiter);

	geld.provision = dummy.geldClass.provision.multiply(new BigDecimal(0.1));
	geld.umsatz = dummy.geldClass.umsatz;

	return geld;
    }

    public void rekursion(Mitarbeiter mitarbeiter) {
	if (!mitarbeiter.getMitarbeiter().isEmpty()) {
	    List<Mitarbeiter> list = mitarbeiter.getMitarbeiter();
	    for (Mitarbeiter x : list) {
		zaehler++;
		rekursion(x);
	    }
	}

	List<Mitarbeiter> list = mitarbeiter.getMitarbeiter();
	for (Mitarbeiter y : list) {


	    // Falls Provision auch rekursiv weiterberechnet werden soll.
	    geldClass.provision = geldClass.provision.add(y.getUmsatz()
		    .multiply(new BigDecimal(Math.pow(0.1, zaehler))));

	    geldClass.umsatz = geldClass.umsatz.add(y.getUmsatz());

	}
	zaehler--;

    }

}
